home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 2000 February
/
Macworld (2000-02).dmg
/
Updaters
/
WhiteCap 3.2.2.sea
/
WhiteCap 3.2.2
/
WhiteCap Source
/
DrawSprocket 1.1.4 SDK
/
DrawSprocket Release Notes
< prev
next >
Wrap
Text File
|
1998-11-24
|
10KB
|
231 lines
DrawSprocket 1.1.4b4
Release Notes
--------------------
For a detailed list of changes from the previous version, please read the
change list at the end of this document.
Please report all bugs using the bug reporter on Apple Developer Connection:
<http://developer.apple.com/bugreporter/index.html>
Release Components
------------------
DrawSprocket Release Notes - this file
DrawSprocket API v1.1 ERS.pdf - API documentation
DSp Debugging Tips - tips for debugging DSp programs
Interfaces&Libraries - headers and link libraries
DrawSprocketLib - release version of the library
DrawSprocketDebugLib - debugging version of the library
WARNING: don't place both the debugging and non-debugging versions of the
library in the search path or you will not be sure which version you are
using.
Dependencies
------------
DrawSprocket relies upon the Display Manager 2.0 or later. It must be
present on your system (and the end-user's system) for DrawSprocket to run.
DrawSprocket requires the latest Universal Headers -- You can find them with the
latest version of your development environment, Apple's WWW and FTP sites or the
developer CD ROMs.
Compatibility with Previous Releases
------------------------------------
DrawSprocket 1.1.4 is fully compatible with previous releases of DrawSprocket.
Changes from 1.1.3 to 1.1.4
---------------------------
Bug Fixes:
- Previous versions of DrawSprocket would call the Display Manager to change the display
mode even if the target mode and current mode were the same. This would cause a
flash of gray across the screen. This is now fixed.
- Previous versions of DrawSprocket would change the gamma table on some video cards,
resulting in "Custom Gamma" appearing in the Monitors and Sounds control panel.
This has been fixed.
- DrawSprocket now includes a ('dlgx', 128) resource so that it does not conflict with
application dialogs.
- If you passed in a color to DSpContext_FadeGamma with RGB values that were smaller
than the size of the table (generally 256), then DrawSprocket would fade to an incorrect
color. Additional changes were also made to support video hardware with a gamma
channel size of greater than 8 bits.
- A few other gamma table changes were made. This is a good place to clarify the usage
of bias colors in DSpContext_FadeGamma.
* If you don't pass in a bias color, then the smallest valid value is 0%, which
would be all black. 100% represents the normal gamma setting of the monitor.
* If you pass in a bias color, then -100% represents black, 0% represents the bias
color and 100% represents the normal gamma settings of the monitor. Other values
are interpolated based on these points. For example, 50% would be half-way between
the bias color and the regular gamma of the monitor.
* Values above 100% are permitted, but will peg to the maximum gamma settings.
- Previous versions of DrawSprocket would call SetWRefCon on a CGrafPort.
- If you paused a page-flipping context, there was a 50/50 chance that you'd put
DrawSprocket into a state where it would lock up within two swaps after you unpaused
the context. This has been corrected.
- When you pause and resume a context, the front page's visRgn was not being reset
properly. This meant that apps using QuickDraw would no longer be able to draw to the
menubar portion of the screen after the context was resumed. This only affected
applications using page flipping or direct access to the front buffer.
- Under extremely low-memory conditions, it was possible for DrawSprocket to fail to
allocate a CGrafPort, and then pass a NULL pointer to CloseCPort, causing the machine
to die an agonizing death. While applications should be checking for low memory
conditions (see Inside Mac: Memory), DrawSprocket will no longer call CloseCPort on
a NULL pointer.
- If you attempted to reserve a context with a pixel depth of less than 8 bits per pixel,
DrawSprocket would calculate rowBytes improperly.
Changes:
- The order in which DrawSprocket will pick resolutions has been modified. If DrawSprocket
has two contexts that both meet the required attributes, this is the order in which
DrawSprocket prioritizes its selection:
* Choose the context with the smallest dimensions
* Choose a context in the preferred depth over any other depth
* Choose a context with the smallest depth
* Always choose a safe context on the main monitor, or the current mode on the main
monitor, over a context on any other monitor.
* Choose a context that is the current mode of a monitor over any other context.
* Choose a safe mode for a monitor over any unsafe mode
* If both contexts are safe, choose the one with the higher refresh rate
* If only one of the contexts is on the main device, choose it
Obviously, many things on this list don't apply if you can DSpUserSelectContext, which
of course, you *should* be doing.
- Additional error handling code was added it to catch errors returned by the Display
Manager.
- Additional debug asserts were added to catch application errors. Please test your code.
- GoggleSprocket is no longer a supported product. Starting with this version of
DrawSprocket, any attempt to find or reserve a stereo context will fail with an error.
Known Issues:
- DrawSprocket does not pad rowBytes, or enforce it to be any particular multiple.
However, its blitter functions expect rowBytes to be a multiple of 8 (PPC) or 16 (68K).
If you allocate an alt-buffer, be sure to choose your bounds appropriately.
- DrawSprocket can mess up the location of the Application Switcher in 8.5.
- If you are using a 7500/7600/8500/8600 machine, you must reset the gamma whenever you
activate or deactivate the context. Doing a gamma fade is sufficient to do this. If
you do not do this, the color tables aren't reset properly, and the screen will be a
flat grey. In addition, pausing a page-flip context on one of those machines will
result in the screen being filled with garbage (VRAM is reorganized).
Changes from 1.1.2 to 1.1.3
---------------------------
Bug Fixes:
- DSp 1.1.2 would crash when you called the 68K versions of the blit calls.
- Removed the load delay when DSp is starting up. Thanx to Kent Miller for that!
Changes:
- You can now call DSpUserSelectContext() on a single-monitor system when you are in
debug mode. This is so that you can test your DSpUSC() code on a single monitor system.
Changes from 1.1 to 1.1.2
-------------------------
I just wanted to take a moment and mention the great assistance that was provided by
Kirk Sumner of MacSoft and Chris Capener of Apple Computer for their assistance in
this release of DrawSprocket. Without them abusing the heck out of it I never would
have found all the GetFrontBuffer and multiple monitor bugs that have been plaguing
the last several release. Gentlemen, my infinite thanx.
Bug Fixes:
- there was a bug in SetCLUTEntries that would update the colors improperly
if you didn't start updating at color 0.
- removed an assert in the debug library that caused problems on some video
cards.
- there was a problem where if a context was placed on a display that did not
physically support the params, and if that display wasn't the main monitor
then QuickDraw calls wouldn't work on those buffers. This is fixed.
- the new call DSpContext_GetFrontBuffer() had a bug where the CGrafPort
representation of the front-buffer was invalid if it wasn't on the main
monitor. You could write directly into the pixmap but you couldn't use
QuickDraw calls. This is now fixed.
- The above fix brought out a bunch of other bugs related to multiple-monitor
usage. These are fixed as well.
- removed DebugStr()'s that were left in the non-debug build.
- A CGrafPtr was left dangling from OpenCPort(), causing crashes on some systems
(when used with OpenDoc, most noticeably).
- a page swap queued immediately before a context pause or inactivation would
still occur after the state change. Now all pending swaps are completed before
the state change.
- requesting an alt buffer with rowbytes == width would not work correctly if the
width was smaller than the display width.
- fixed some null-pointer dereferences.
- the rightmost portion of the menu bar was not being re-added to
the gray region after a context deactivation, when the context resolution
was smaller than the desktop resolution. The control strip sometimes went
under the menu bar on context deactivation because of this.
- duplicate buffer release when closing down a page flipped context.
- was not correctly disposing of alt buffers, causing duplicate
releases.
- fixed a bug where invalidating the entire underlay buffer only redrew the
back buffer's dirty rects instead of the entire buffer.
- there was an anomalous condition involved with setting a page count of 1 and
page-flipping active on machines that have page-flipping. In essence, you'd
always be waiting for page 0 to become free and it never would. If you have
the page-flipping bit turned on and the hardware supports it the page-count
will now always be set to a minimum of two.
Changes:
- DrawSprocket is now weak-linked against the Display Manager. If DM is
not present DrawSprocket _will_ load but the call to DSpStartup() will fail
and return an error code.
- removed some timing code in the slot VBL task to improve
performance that was degraded in 1.1.
- Several changes to the user select context dialog. You can now double-click
on the rect for a monitor to select it and continue. You can now hit ESC, or
Command-period to cancel. You can also hit tab or space to cycle through the
monitors.
- New call - DSpContext_GetFrontBuffer(). This gives you a CGrafPtr to access the
front buffer of your DSp context. This was previously a private call.